# 如何定义字典，以及如何使⽤存储在字典中的信息。
# 访问和修改字典中的元素，以及如何遍历字典中的所有信息。
# 如何遍历字典中的所有键值对、所有的键和所有的值。
# 如何在列表中嵌套字典，如何在字典中嵌套列表，以及如何在字典中嵌套字典


# 练习 6.7：⼈们 在为练习 6.1 编写的程序中，再创建两个表⽰⼈的字
# 典，然后将这三个字典都存储在⼀个名为 people 的列表中。遍历这
# 个列表，将其中每个⼈的所有信息都打印出来。

person1 = {'first_name': 'tony1', 'last_name': 'stack',
           'age': '36', 'city': 'new york'}
person2 = {'first_name': 'tony2', 'last_name': 'stack',
           'age': '36', 'city': 'new york'}
person3 = {'first_name': 'tony3', 'last_name': 'stack',
           'age': '36', 'city': 'new york'}

people = [person1, person2, person3]
for person in people:
    print(person)


# 练习 6.8：宠物 创建多个表⽰宠物的字典，每个字典都包含宠物的类
# 型及其主⼈的名字。将这些字典存储在⼀个名为 pets 的列表中，再
# 遍历该列表，并将有关每个宠物的所有信息打印出来。

pet = {'animal_type': 'cat', 'name': 'kitty'}
pet2 = {'animal_type': 'dog', 'name': 'tom'}
pets = [pet, pet2]

for animal in pets:
    print(animal)


# 练习 6.9：喜欢的地⽅ 创建⼀个名为 favorite_places 的字典。
# 在这个字典中，将三个⼈的名字⽤作键，并存储每个⼈喜欢的 1〜3 个
# 地⽅。为让这个练习更有趣些，让⼀些朋友说出他们喜欢的⼏个地
# ⽅。遍历这个字典，并将其中每个⼈的名字及其喜欢的地⽅打印出
# 来。

favorite_places = {'tom': ['beach', 'mountain'], 'jack': [
    'city', 'forest'], 'lucas': ['river', 'mountain']}
for name, places in favorite_places.items():
    print(f'{name} likes {places}')


# 练习 6.10：喜欢的数 2 修改为练习 6.2 编写的程序，让每个⼈都可以
# 有多个喜欢的数字，然后将每个⼈的名字及其喜欢的数打印出来。

favorite_numbers = {'tony': '36', 'jack': '18',
                    'lucas': '29', 'lily': '20', 'mike': '30'}
for name, num in favorite_numbers.items():
    print(f'{name} favorite number is {num}')


# 练习 6.11：城市 创建⼀个名为 cities 的字典，将三个城市名⽤作
# 键。对于每座城市，都创建⼀个字典，并在其中包含该城市所属的国
# 家、⼈⼝约数以及⼀个有关该城市的事实。表⽰每座城市的字典都应
# 包含 country、population 和 fact 等键。将每座城市的名字以及
# 相关信息都打印出来。
cities = {'hefei': {'country': 'china', 'population': '1500w',
                    'fact': 'one of the largest cities for science and education in china'}}
for city, info in cities.items():
    print(
        f'{city} is in {info["country"]}, has population of {info["population"]}, and it is {info["fact"]}')


# 练习 6.12：扩展 本章的⽰例⾜够复杂，能以很多⽅式进⾏扩展。请
# 对本章的⼀个⽰例进⾏扩展：添加键和值，调整程序要解决的问题，
# 或改进输出的格式。

users = {
    'aeinstein': {
        'first': 'albert',
        'last': 'einstein',
        'location': 'princeton',
    },
    'mcurie': {
        'first': 'marie',
        'last': 'curie',
        'location': 'paris',
    }
}

users['aeinstein']['location'] = 'princeton USA'

for user, info in users.items():
    print(f"{user} {info['last']} lives in {info['location']}")
